package 面试经典150题.哈希表;

import java.util.HashSet;
import java.util.Set;

/**
 * @author tmh
 * @date 2024/5/28 20:44
 * @description
 */
public class T202快乐数 {

    public boolean isHappy(int n) {
        Set<Integer> set = new HashSet<>();
        //如果n不为1 同时 set集合里面不包含重复的元素，那么就可以继续获取构成这个数的每个数的平方和
        while (n != 1 && !set.contains(n)) {
            set.add(n);
            n = getNext(n);
        }
        return n == 1;

    }

    //求一个数的每位数的平方和方法
    public int getNext(int n) {
        int sum = 0;
        while (n > 0) {
            int m = n % 10;
            sum += m * m;
            n = n / 10;
        }
        return sum;
    }
}
